package com.noboauto.vehicle.view.util

import android.content.Context
import kotlin.math.pow

/**
 * @auth : WANGCHUANGJUN
 * @mail : 910868438@qq.com
 * @desc : 海拔计算
 * @date : 2021/12/13 11:11
 */
object AltitudeUtil {

    /**
     * 通过气压计算海拔
     * @param mPa Double  气压
     * @return Double  单位：英尺
     */
    fun getFeetAltitude(mPa: Double): Double {
        return 145366.45f * (1 - (mPa / 1013.25).pow(0.190284))
    }

    /**
     * 通过气压计算海拔
     * @param mPa Double  气压
     * @return Double    单位：米
     */
    fun getMeterAltitude(mPa: Double) : Double{
        return 0.3048 * getFeetAltitude(mPa)
    }

    @JvmStatic
    fun main(args: Array<String>) {
        println(getMeterAltitude(getFeetAltitude(1000.0)))
    }

    fun dipToPx(context: Context, dp: Float): Int {
        return (dp * context.resources.displayMetrics.density + 0.5f).toInt()
    }

    fun pxToDip(context: Context, px: Float): Int {
        return (px / context.resources.displayMetrics.density + 0.5f).toInt()
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     *
     * @param pxValue
     * （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    fun px2sp(context: Context, pxValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (pxValue / fontScale + 0.5f).toInt()
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spValue
     * （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    fun sp2px(context: Context, spValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (spValue * fontScale + 0.5f).toInt()
    }
}